<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018-12-13
 * Time: 9:40
 */

namespace app\index\controller;



use app\common\model\User;
use PHPMailer\PHPMailer;
use think\Cache;
use think\Controller;

class Mail extends Controller
{
    /**
     * @return \think\response\Json
     * @throws \PHPMailer\Exception
     */
    public function email()
    {
        $data = input();
        $validate_result = $this->validate($data, 'Wemail');
        if ($validate_result !== true) {
            return json(['code' => 300, 'msg' => $validate_result]);
        }
        $toemail = $data['u_email'];//定义收件人的邮箱
        $type = $data['type'];//注册账号  该类型传1    找回密码 该类型传2
        $eId = User::emailRepace($toemail);
        if ($type == 1) {
            if ($eId) {
                return json(['code' => 300, 'msg' => '该邮箱已注册。']);
            }
        } else if ($type == 2){
            if (!$eId) {
                return json(['code' => 300, 'msg' => '该邮箱不存在']);
            }
        } else {
            return json(['code' => 300, 'msg' => '请求发送邮箱验证码类型错误']);
        }
        $mail = new PHPMailer();
        $mail->isSMTP();//使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "690387333@qq.com";// 发送方的QQ邮箱用户名，就是自己的邮箱名
        $mail->Password = "cfsxtpfcbdgwbbgd";// 发送方的邮箱密码，不是登录密码,是qq的第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式,
        $mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587
        $mail->setFrom("690387333@qq.com", "杜高斯贝");// 设置发件人信息，如邮件格式说明中的发件人,
        $mail->addAddress($toemail, $toemail);// 设置收件人信息，如邮件格式说明中的收件人
        $mail->addReplyTo("690387333@qq.com", "杜高斯贝");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件
        $mail->Subject = "杜高斯贝验证码";// 邮件标题
//        $str = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
        $str = "12vzxc34zvxc567hdsrdg89zxc0qwer789tyui123op456asdf789ghjk123lzx456cvbnm";
        $code = substr(str_shuffle($str),mt_rand(0,strlen($str)-11),6);
        Cache::set($toemail, $code, 300);//把验证码存到缓存里面
        if($type == 1) {
            $mail->Body = "您正在注册杜高斯贝的账号， 验证码:".$code."请勿泄露!有效期5分钟。如非您本人操作, 请忽略此邮件, 给您带来的不便, 敬请谅解！";// 邮件正文
        } elseif ($type == 2) {
            $mail->Body = "您正在找回杜高斯贝的账号， 验证码:".$code."请勿泄露!有效期5分钟。如非您本人操作, 请忽略此邮件, 给您带来的不便, 敬请谅解！";// 邮件正文
        }
        //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用
        if (!$mail->send()) {// 发送邮件

            return json(['code' => 301, 'msg' => '验证码发送失败，请稍后重试！']);
        } else {
            return json(['code' => 200, 'msg' => '验证码发送成功！']);
        }

    }



}